home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / 8bit / cislib_a / ddir2.m65 < prev    next >
Text File  |  1995-04-22  |  5KB  |  199 lines

  1. 1000     .TITLE "DDIR2.M65" 
  2. 1010 ; 
  3. 1020 ; -------------------------------- 
  4. 1030 ; 
  5. 1040 ; Assemble as DDIR.COM  --  if 
  6. 1050 ; you have the 'original' DDIR 
  7. 1060 ; program, unprotect the .COM 
  8. 1070 ; file and when this is assembled 
  9. 1080 ; it will wipe out the original 
  10. 1090 ; version 
  11. 1100 ; 
  12. 1110 ; -------------------------------- 
  13. 1120 ; 
  14. 1130 ; WARNING!!! 
  15. 1140 ;    For some reason that I can't 
  16. 1150 ;  fathom, this program will only 
  17. 1160 ;  run properly when used with 
  18. 1170 ;  DOS/XL versions 2.2 and 2.3. 
  19. 1180 ;    If it is run under any of the 
  20. 1190 ;  earlier OSS DOSes, it hangs up. 
  21. 1200 ;    Is it possible that I am 
  22. 1210 ;  running into a bug that has 
  23. 1220 ;  been fixed in the latest 
  24. 1230 ;  versions of DOS/XL?  Of course, 
  25. 1240 ;  its more likely that I'm the 
  26. 1250 ;  culprit.  If you find that I 
  27. 1260 ;  am the guilty party, let me 
  28. 1270 ;  what the error is. 
  29. 1280 ; 
  30. 1290 ; -------------------------------- 
  31. 1300 ; 
  32. 1310 ; USAGE: 
  33. 1320 ;   - [Dx:] DDIR Dn:filename.ext 
  34. 1330 ;       uses filename.ext as a 
  35. 1340 ;       search specification for 
  36. 1350 ;       files on Dn: 
  37. 1360 ;   - [Dx:] DDIR filename.ext 
  38. 1370 ;       works same as above 
  39. 1380 ;   - [Dx:] DDIR 
  40. 1390 ;       shows all files on Dx:, 
  41. 1400 ;       the default drive 
  42. 1410 ; 
  43. 1420 ; Note - the [Dx:] is meant to 
  44. 1430 ;        stand for the prompt 
  45. 1440 ;        that OS/A+ or DOS/XL 
  46. 1450 ;        is displaying.  The 
  47. 1460 ;        'x' would be the number 
  48. 1470 ;        of the default drive, 
  49. 1480 ;        which ranges from 1 to 4 
  50. 1490 ; 
  51. 1500 ; -------------------------------- 
  52. 1510 ; 
  53. 1520 ; the needed equates 
  54. 1530 ; 
  55. 1540 COPN =  $03 
  56. 1550 CGTXTR = $05 
  57. 1560 OPDIR = $06 
  58. 1570 CPBINR = $0B 
  59. 1580 CCLOSE = $0C 
  60. 1590 ROWCRS = $54 
  61. 1600 COLCRS = $55 
  62. 1610 EOL =   $9B 
  63. 1620 CPGNFN = $03 
  64. 1630 CPDFDV = $07 
  65. 1640 CPALOC = $0A 
  66. 1650 CPBUFP = $0A 
  67. 1660 CPFNAM = $21 
  68. 1670 GOADR = $02E0 
  69. 1680 ICCOM = $0342 
  70. 1690 ICBADR = $0344 
  71. 1700 ICBLEN = $0348 
  72. 1710 ICAUX1 = $034A 
  73. 1720 ICAUX2 = $034B 
  74. 1730 CIOV =  $E456 
  75. 1740 ; 
  76. 1750     *=  $4000 
  77. 1760 ; 
  78. 1770 ; miscellaneous storage, etc. 
  79. 1780 ; 
  80. 1790 TEMP 
  81. 1800     .BYTE $15 
  82. 1810 BUFPTR 
  83. 1820     .BYTE 0 
  84. 1830 DEFAULT 
  85. 1840     .BYTE "D1:*.*",EOL 
  86. 1850 BUFFER 
  87. 1860     *=  *+$12   ; I/O buffer 
  88. 1870 FNAME 
  89. 1880     *=  *+$10   ; filename buffer 
  90. 1890 ; 
  91. 1900 ; start the code..... 
  92. 1910 ; 
  93. 1920 FETCHNAME 
  94. 1930     JMP $E477   ;dummy address 
  95. 1940     RTS  
  96. 1950 PARSE ;         ...we begin here 
  97. 1960     LDY #CPBUFP 
  98. 1970     LDA (CPALOC),Y 
  99. 1980     STA BUFPTR  ;save pointer 
  100. 1990     CLC  
  101. 2000     LDA CPALOC 
  102. 2010     ADC #CPGNFN 
  103. 2020     STA FETCHNAME+1 
  104. 2030     LDA CPALOC+1 
  105. 2040     ADC #$00 
  106. 2050     STA FETCHNAME+2 
  107. 2060     JSR FETCHNAME 
  108. 2070     LDY #CPBUFP 
  109. 2080     LDA (CPALOC),Y 
  110. 2090     CMP BUFPTR  ;did pointer move? 
  111. 2100     BEQ NONAME  ;no, use default 
  112. 2110 MOVENAME 
  113. 2120     LDX #$00 
  114. 2130     LDY #CPFNAM 
  115. 2140 LOOP 
  116. 2150     LDA (CPALOC),Y 
  117. 2160     STA FNAME,X 
  118. 2170     CMP #EOL 
  119. 2180     BEQ GOTNAME 
  120. 2190     INY  
  121. 2200     INX  
  122. 2210     CPX #$10 
  123. 2220     BNE LOOP 
  124. 2230     BEQ GOTNAME 
  125. 2240 NONAME 
  126. 2250     LDY #CPDFDV+1 ;default drive # 
  127. 2260     LDA (CPALOC),Y 
  128. 2270     STA DEFAULT+1 
  129. 2280     LDA # <DEFAULT ;brute force! 
  130. 2290     STA REALNAME+1 
  131. 2300     LDA # >DEFAULT 
  132. 2310     STA REALNAME+6 
  133. 2320 GOTNAME 
  134. 2330     LDX #$10    ;open 1,6,0,fname 
  135. 2340     LDA #COPN 
  136. 2350     STA ICCOM,X 
  137. 2360     LDA #OPDIR 
  138. 2370     STA ICAUX1,X 
  139. 2380     LDA #$00 
  140. 2390     STA ICAUX2,X 
  141. 2400 REALNAME 
  142. 2410     LDA # <FNAME 
  143. 2420     STA ICBADR,X 
  144. 2430     LDA # >FNAME 
  145. 2440     STA ICBADR+1,X 
  146. 2450     JSR CIOV 
  147. 2460     TYA  
  148. 2470     BMI ERROR 
  149. 2480 ENTRY 
  150. 2490     LDX #$10    ;input 1,buffer,18 
  151. 2500     LDA #CGTXTR 
  152. 2510     STA ICCOM,X 
  153. 2520     LDA # <BUFFER 
  154. 2530     STA ICBADR,X 
  155. 2540     LDA # >BUFFER 
  156. 2550     STA ICBADR+1,X 
  157. 2560     LDA #$12 
  158. 2570     STA ICBLEN,X 
  159. 2580     LDA #$00 
  160. 2590     STA ICBLEN+1,X 
  161. 2600     JSR CIOV 
  162. 2610     TYA  
  163. 2620     BMI ERROR 
  164. 2630     LDA TEMP 
  165. 2640     EOR #$14    ;nice trick! 
  166. 2650     STA COLCRS 
  167. 2660     STA TEMP 
  168. 2670     CMP #$01 
  169. 2680     BEQ SKIP 
  170. 2690     DEC ROWCRS 
  171. 2700 SKIP 
  172. 2710     LDX #$00    ;bput 0,buffer,18 
  173. 2720     LDA #CPBINR 
  174. 2730     STA ICCOM,X 
  175. 2740     LDA # <BUFFER 
  176. 2750     STA ICBADR,X 
  177. 2760     LDA # >BUFFER 
  178. 2770     STA ICBADR+1,X 
  179. 2780     LDA #$12 
  180. 2790     STA ICBLEN,X 
  181. 2800     LDA #$00 
  182. 2810     STA ICBLEN+1,X 
  183. 2820     JSR CIOV 
  184. 2830     TYA  
  185. 2840     BPL ENTRY 
  186. 2850 ERROR 
  187. 2860     LDX #$10    ;close 1 
  188. 2870     LDA #CCLOSE 
  189. 2880     STA ICCOM,X 
  190. 2890     JSR CIOV 
  191. 2900     DEC ROWCRS  ; do it twice... 
  192. 2910     DEC ROWCRS  ; ...saves a line 
  193. 2920     RTS  
  194. 2930 ; 
  195. 2940     *=  GOADR 
  196. 2950     .WORD PARSE ; start at PARSE 
  197. 2960 ; 
  198. 2970     .END  
  199.